home *** CD-ROM | disk | FTP | other *** search
/ Computer Games 95 / Computer Games 95.iso / demos / queen / runsnwin.rul < prev    next >
Text File  |  1998-07-23  |  8KB  |  235 lines

  1. // modular section
  2. #define MOD_GAME_MAKER    ""
  3. #define MOD_GAME_TITLE    "Queen the Eye"
  4. #define MOD_GAME_PATH     "C:\\queen"
  5. #define BASE_FILE_SIZE    48259176
  6. #define MOD_STR_FILE_SIZE "57"
  7. #define MOD_ZFILENAME     "queen.z"
  8.  
  9. // size of operating system files
  10. #define OS_FILE  13
  11. #define OS_PATH  128
  12.  
  13. /********************************************************************
  14. *
  15. * declare variables
  16. *
  17. ********************************************************************/
  18. declare
  19.   string  szBitmapPath[OS_PATH];
  20.   string  szMessage[1024];     // used for MessageBox output
  21.   string  szDisk[10];          // disk drive letter
  22.   string  szTemp[20];          // used for temp calcs
  23.   string  szTarget[OS_PATH];   // temp store for target directory
  24.   string  szErrMsg[100];       // error handling
  25.   string  szErrFile[OS_FILE];  // error handling
  26.   string  TARGET_PATH[OS_PATH];
  27.   string  szTempStr[1024];     // added for modularity
  28.   string  szTitleStr[1024];    // added for modularity
  29.  
  30.   number nNeeded;              // space needed on target
  31.   number nExistSpace;          // existing space on target disk
  32.  
  33.   number nTotal;               // used to calc percentage of files copied
  34.   number nPercent;
  35.  
  36.   number nDoInstall;
  37.   number nValue;
  38.   number nDx;
  39.   number nDy;
  40.  
  41. program
  42.  
  43. Start:
  44.   // Size the Window to FULL SCREEN
  45.   GetExtents ( nDx, nDy);
  46.   SizeWindow( BACKGROUND, nDx, nDy );
  47.  
  48.   // target installation path
  49.   TARGET_PATH = MOD_GAME_PATH;
  50.  
  51. /********************************************************************
  52. *
  53. * start of script
  54. *
  55. ********************************************************************/
  56.   // Display Title
  57.   StrCopy(   szTitleStr, MOD_GAME_MAKER );
  58.   StrConcat( szTitleStr, " " );
  59.   StrConcat( szTitleStr, MOD_GAME_TITLE );
  60.   StrConcat( szTitleStr, " Installation" );
  61.   SetTitle( szTitleStr, 24, RED);
  62.  
  63.   // position and display the exit button
  64.   PlaceWindow( EXIT, 20, 20, LOWER_RIGHT );
  65.   Enable( EXIT );
  66.  
  67.   // Initialize window titles
  68.   StrCopy(   szTempStr, MOD_GAME_TITLE );
  69.   StrConcat( szTempStr, " Install" );
  70.   SetDialogTitle( DLG_ASK_YESNO,   szTempStr );
  71.   SetDialogTitle( DLG_ASK_OPTIONS, szTempStr );
  72.   SetDialogTitle( DLG_ASK_PATH,    szTempStr );
  73.  
  74.   // see if user wants to install present
  75.   StrCopy(   szMessage, "Would you like to install ");
  76.   StrConcat( szMessage, MOD_GAME_TITLE );
  77.   StrConcat( szMessage, ",\n" );
  78.   StrConcat( szMessage, "it takes approximately " );
  79.   StrConcat( szMessage, MOD_STR_FILE_SIZE );
  80.   StrConcat( szMessage, " Meg of hard\n" );
  81.   StrConcat( szMessage, "drive space ?\n" );
  82.   AskYesNo( szMessage, YES );
  83.   if ( LAST_RESULT = YES ) then
  84.     nDoInstall = TRUE;
  85.     call GetInstallDir;
  86.   else
  87.     exit;
  88.   endif;
  89.  
  90.   // carry out users actions
  91.   if ( nDoInstall = TRUE ) then
  92.     call Install;
  93.   endif;
  94.  
  95. InstallComplete:
  96.   SetStatusWindow( 100, "Installation complete..." );
  97.   Disable( STATUS );      // Status , % Complete Bar Window
  98.  
  99.   // add generic end of install comment
  100.   StrCopy( szMessage, "Installation is complete.\n" );
  101.  
  102.    MessageBox( szMessage, INFORMATION );
  103.  
  104.   exit;
  105.  
  106. /**********************************************************************
  107. *
  108. * get the install directory and check for validity
  109. *
  110. ***********************************************************************/
  111. GetInstallDir:
  112.   // Get path to install IE magazine
  113.   StrCopy(   szMessage, MOD_GAME_TITLE);
  114.   StrConcat( szMessage, " will be installed into the\n");
  115.   StrConcat( szMessage, "following directory, which will be created\n");
  116.   StrConcat( szMessage, "on your hard disk.\n");
  117.   StrConcat( szMessage, "If you want to install the game in a different\n");
  118.   StrConcat( szMessage, "directory and/or drive, type the name of the\n");
  119.   StrConcat( szMessage, "directory.");
  120.   AskPath( szMessage, TARGET_PATH, TARGETDIR );
  121.   if ( LAST_RESULT = FALSE ) then
  122.     // check if really want to cancel
  123.     AskYesNo( "Are you sure you want to CANCEL the installation ?", FALSE );
  124.     if ( LAST_RESULT = TRUE ) then
  125.       // user wants to cancel install, return now
  126.       nDoInstall = FALSE;
  127.       return;
  128.     endif;
  129.  
  130.     // user wants to have another shot at installing, loop back
  131.     goto GetInstallDir;
  132.   endif;
  133.  
  134.   // Check If valid disk entered
  135.   GetDisk( TARGETDIR, szDisk );
  136.   ExistsDisk( szDisk );
  137.   if ( LAST_RESULT = NOTEXISTS ) then   // Invalid disk entered, reprompt
  138.     StrCopy(   szMessage, szDisk);
  139.     StrConcat( szMessage, " - is an invalid disk, press Ok ");
  140.     StrConcat( szMessage, "to return to the path selection");
  141.     MessageBeep(0);
  142.     MessageBox( szMessage, WARNING );
  143.     goto GetInstallDir;                 // get new path
  144.   endif;
  145.  
  146.   // install here
  147.   // Check to see if enough space is free on the destination drive.
  148.   GetDiskSpace( szDisk );
  149.   Assign( nExistSpace, LAST_RESULT );
  150.  
  151.   // see if existing space is less than what we need
  152.   if ( nExistSpace < BASE_FILE_SIZE ) then
  153.     // get amount of space needed
  154.     Assign( nNeeded, BASE_FILE_SIZE );
  155.     Sub( nNeeded, nExistSpace );
  156.  
  157.     // inform user
  158.     StrCopy( szMessage, "An additional ");
  159.     NumToStr( szTemp, nNeeded);
  160.     StrConcat( szMessage, szTemp);
  161.     StrConcat( szMessage, " bytes of space is required to");
  162.     StrConcat( szMessage, "\ninstall on drive  ");
  163.     StrConcat( szMessage, szDisk );
  164.     StrConcat( szMessage, "\nPlease free up this space and reinstall the\n");
  165.     StrConcat( szMessage, "demo");
  166.     MessageBox( szMessage, WARNING );
  167.     goto GetInstallDir;  // get new path
  168.   endif;
  169.  
  170.   // see if the target directory exists
  171.   ExistsDir( TARGETDIR );
  172.   if ( LAST_RESULT = NOTEXISTS ) then  // if it doesn't exist try to create it
  173.     CreateDir( TARGETDIR );
  174.     if ( LAST_RESULT = NOTEXISTS ) then   // couldn't create it
  175.       StrCopy(   szMessage, "Unable to create specified path:\n" );
  176.       StrConcat( szMessage, TARGETDIR );
  177.       StrConcat( szMessage, "\nPlease enter a correct path like " );
  178.       StrConcat( szMessage, TARGET_PATH );
  179.       MessageBeep( 0 );
  180.       MessageBox( szMessage, WARNING );
  181.       goto GetInstallDir;  // get new path
  182.     endif;
  183.     // if this was a good directory name then we can change to it
  184.     ExistsDir( TARGETDIR );
  185.     if ( LAST_RESULT = NOTEXISTS ) then
  186.       StrConcat( szMessage, TARGETDIR );
  187.       StrCopy(   szMessage, "\nis an illegal path name.\n" );
  188.       StrConcat( szMessage, "\nPlease enter a correct path like " );
  189.       StrConcat( szMessage, TARGET_PATH );
  190.       MessageBeep( 0 );
  191.       MessageBox( szMessage, WARNING );
  192.       goto GetInstallDir;  // get new path
  193.     endif;
  194.   endif;
  195.  
  196. return;
  197.  
  198. /**********************************************************************
  199. *
  200. * install
  201. *
  202. ***********************************************************************/
  203. Install:
  204.   Enable( STATUS );
  205.   // Shows all filenames when copied.
  206.   Enable( INDVFILESTATUS );
  207.  
  208.   // start the status bar at 1 with this title
  209.   SetStatusWindow( 1, "Installing files..." );
  210.  
  211.   // make the bar increment, file by file to 100%
  212.   StatusUpdate( ON, 100 );
  213.   CompressGet( MOD_ZFILENAME, "*.*", INCLUDE_SUBDIR );
  214.   if ( LAST_RESULT < 0 ) then
  215.     StrCopy( szErrFile, "Demo Files" );
  216.     call CopyError;
  217.   endif;
  218.  
  219.   // hides file name status
  220.   Disable( INDVFILESTATUS );
  221. return;
  222.  
  223. /**********************************************************************
  224. *
  225. * reports errors in copying files
  226. *
  227. **********************************************************************/
  228. CopyError:
  229.   // display file copy error message
  230.   StrCopy( szErrMsg, "Unable to copy or decompress files: " );
  231.   StrConcat( szErrMsg, szErrFile );
  232.   MessageBeep( 0 );
  233.   MessageBox( szErrMsg, SEVERE );
  234. return;
  235.